﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insifo.WE;
using System.Text.RegularExpressions;
using System.Collections.Specialized;


public partial class genPersonaEditar : ObjectPage
{
    #region CONSTANTES

    private const string RUTA_LISTA = "~/gen/genPersonaListar.aspx";

    #endregion

    #region PROPIEDADES

    public WCPersona.BEPersona Persona
    {
        get { return (WCPersona.BEPersona)ViewState["GrupoDato"]; }
        set { ViewState["GrupoDato"] = value; }
    }

    #endregion PROPIEDADES
    
    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        //Eventos del Master
        Master.MenuAccionEvento += new MasterPageMenuEditarClickHandler(Master_MenuButton);
        if (!IsPostBack)
        {            
            Cargar();
        }
    }

    protected void Master_MenuButton(object sender, EventArgs e)
    {
        string strAccion = ((CommandEventArgs)e).CommandName;
        switch (strAccion)
        {
            case "Aceptar":
                Guardar("G");
                break;
            case "Aplicar":
                Guardar("A"); 
                break;
            case "Cancelar":
                Salir();
                break;
        }
    }

    

    #endregion

    #region METODOS

    protected void Cargar()
    {
        string strAccion =  Request.QueryString["a"];   //a: N-Nuevo, e-Editar, v-Ver
        string strId = Request.QueryString["i"];  //Id
        string strIdAp = Request.QueryString["ap"];  //Id de Aplicacion
        //Eventos Java Script
        this.Master.MenuAceptar.Attributes.Add("OnClick", "javascript:return fnValidar();");
       
        //Carga Estado Civil
        Util.loadComboAndItem(ddlEstadoCivil, ListarParametroDetalle(1, UsuarioSistema.IdAplicacion, Constantes.PARAMETRO_ESTADOCIVIL), "Descripcion", "ParametroDetalle", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        //Carga Tipo Documento
        Util.loadComboAndItem(ddlTipoDocumento, ListarParametroDetalle(1, 1, Constantes.PARAMETRO_TIPODOCUMENTO), "Descripcion", "ParametroDetalle", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        //Carga Clase Persona
        Util.loadComboAndItem(ddlClasePersona, ListarParametroDetalle(1, UsuarioSistema.IdAplicacion, Constantes.PARAMETRO_CLASEPERSONA), "Descripcion", "ParametroDetalle", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        //Carga Clase Persona
        Util.loadComboAndItem(ddlNacionalidad, ListarParametroDetalle(1, UsuarioSistema.IdAplicacion, Constantes.PARAMETRO_NACIONALIDAD), "Descripcion", "ParametroDetalle", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        //Carga Estado
        Util.loadCombo(ddlEstado, ListarParametroDetalle(1, 1, Constantes.PARAMETRO_ESTADOREGISTRO), "Descripcion", "ParametroDetalle");
        //Carga GRUPO EMPRESARIAL
        Util.loadComboAndItem(ddlIdGrupo, ListarGrupoEmpresarial(), "Descripcion", "IdGrupo", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        lnkGeneral.HRef = string.Format("#{0}", tabGeneral.ClientID);
        lnkDireccion.HRef = string.Format("#{0}", tabDireccion.ClientID);
        //ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "CargarTabs", "javascript:CargarTabs();", true);

        switch (strAccion)
        {
            case "n":
                Master.SubTitulo.Text =  Resources.resDiccionario.Nuevo;
                Nuevo();
                break;
            case "e":
                Master.SubTitulo.Text =  Resources.resDiccionario.Editar;
                Editar(strAccion, strId);
                
                break;
            case "d":
                Master.SubTitulo.Text =  Resources.resDiccionario.Inactivar;
                Editar(strAccion, strId);
                break;
            default:
               Master.SubTitulo.Text =  Resources.resDiccionario.Unknow;
                break;
        }
    }

    protected void Nuevo()
    {
        hfIdPersona.Value = "0";
        hfAccion.Value = "n"; //Nuevo
        txtIdPersona.Text = string.Empty;
        txtIdPersona.Enabled = false;
        txtCodigoBarras.Text = string.Empty;
        txtApellidoPaterno.Text = string.Empty;
        txtApellidoMaterno.Text = string.Empty;
        txtNombres.Text = string.Empty;
        //txtNombreCompleto.Enabled = false;
        txtNombreCompleto.Text = string.Empty;
        txtNombreBusqueda.Text = string.Empty;
        txtCodigoPersona.Text = string.Empty;
        txtFechaNacimiento.Text = string.Empty;
        ddlNacionalidad.SelectedIndex = 0;
        ddlSexo.SelectedIndex = 0;
        ddlEstadoCivil.SelectedIndex = 0;
        txtFechaInicioVisa.Text = string.Empty;
        txtFechaExpiracionVisa.Text = string.Empty;
        //ddlClasePersona.SelectedIndex = 0;
        Util.SelectCombo(ddlClasePersona, Constantes.CLASEPERSONA_NATURAL);
        ddlIdGrupo.SelectedIndex = 0;
        //cbEsCliente.Enabled = false;
        //cxbEsEmpleado.Enabled = false;
        //cbEsProveedor.Enabled = false;
        //cbxEsOtro.Enabled = false;
        
   
        txtTelefono1.Text = string.Empty;
        txtTelefono2.Text = string.Empty;
        txtTelefono3.Text = string.Empty;
        txtCelular1.Text = string.Empty;
        txtCelular2.Text = string.Empty;
        txtCelular3.Text = string.Empty;
        txtFax.Text = string.Empty;
        txtCorreoElectronico.Text = string.Empty;

        ddlTipoDocumento.SelectedIndex = 0;
        txtDocumento.Text = string.Empty;
        txtDocumentoFiscal.Text = string.Empty;
        

        //Datos de Auditoria
        ddlEstado.SelectedIndex = 0; //Representa el primero
        txtUsuarioCreacion.Text = string.Empty;
        txtFechaCreacion.Text = string.Empty;
        txtUsuarioModificacion.Text = string.Empty;
        txtFechaModificacion.Text = string.Empty;
    }

    protected void Editar(string pstrAccion, string pstrIdPersona)
    {

        WCPersona.BEPersona be = new WCPersona.BEPersona
        {
            IdPersona = Int32.Parse(pstrIdPersona)
        };
        be = ObtenerPersona(be);

        hfIdPersona.Value = pstrIdPersona;
        hfIdSpring.Value = be.IdSpring.ToString();

        hfAccion.Value = pstrAccion; //Editar/Eliminar
        txtIdPersona.Text = hfIdPersona.Value;
        txtIdPersona.Enabled = false;
        //txtNombreCompleto.Enabled = false;
        //cbEsCliente.Enabled = false;
        //cxbEsEmpleado.Enabled = false;
        //cbEsProveedor.Enabled = false;
        //cbxEsOtro.Enabled = false;

        cbEsCliente.Checked = be.EsCliente == "S" ? true : false;
        cxbEsEmpleado.Checked = be.EsEmpleado == "S" ? true : false;
        cbEsProveedor.Checked = be.EsProveedor == "S" ? true : false;
        cbxEsOtro.Checked = be.EsOtro == "S" ? true : false;

        txtCodigoPersona.Text = be.CodigoPersona;
        txtCodigoBarras.Text = be.CodigoBarras;
        txtApellidoPaterno.Text = be.ApellidoPaterno;
        txtApellidoMaterno.Text = be.ApellidoMaterno;
        txtNombres.Text = be.Nombres;
        txtNombreCompleto.Text = be.NombreCompleto;
        txtNombreBusqueda.Text = be.NombreBusqueda;

        txtFechaNacimiento.Text = be.FechaNacimiento == null ? string.Empty : ((DateTime)be.FechaNacimiento).ToString(AppSettings.FormatoFecha);
        Util.SelectCombo(ddlNacionalidad, be.Nacionalidad);
        Util.SelectCombo(ddlSexo, be.Sexo);
        Util.SelectCombo(ddlEstadoCivil, be.EstadoCivil);
        Util.SelectCombo(ddlClasePersona, be.ClasePersona);
        Util.SelectCombo(ddlIdGrupo, be.IdGrupo.ToString());
        //txtFechaInicioVisa.Text = be.FechaInicioVisa == null ? string.Empty : ((DateTime)be.FechaInicioVisa).ToString(AppSettings.FormatoFecha);
        //txtFechaExpiracionVisa.Text = be.FechaExpiracionVisa == null ? string.Empty : ((DateTime)be.FechaExpiracionVisa).ToString(AppSettings.FormatoFecha);

        txtTelefono1.Text = be.Telefono1;
        txtTelefono2.Text = be.Telefono2;
        txtTelefono3.Text = be.Telefono3;
        txtCelular1.Text = be.Celular1;
        txtCelular2.Text = be.Celular2;
        txtCelular3.Text = be.Celular3;
        txtFax.Text = be.Fax;
        txtCorreoElectronico.Text = be.CorreoElectronico;

        Util.SelectCombo(ddlTipoDocumento, be.TipoDocumento);
        txtDocumento.Text = be.Documento;
        txtDocumentoFiscal.Text = be.DocumentoFiscal;

        //Datos de Auditoria
        Util.SelectCombo(ddlEstado, be.Estado);
        txtUsuarioCreacion.Text = be.UsuarioCreacion;
        txtFechaCreacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
        txtUsuarioModificacion.Text = be.UsuarioModificacion;
        txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);

        if (pstrAccion == "d")
        {
            Master.MenuAplicar.Visible = false; //Remueve el boton aplicar
            txtIdPersona.Enabled = false;


            cbEsCliente.Enabled = false;
            cxbEsEmpleado.Enabled = false;
            cbEsProveedor.Enabled = false;
            cbxEsOtro.Enabled = false;

            txtCodigoPersona.Enabled = false;
            txtCodigoBarras.Enabled = false;
            txtApellidoPaterno.Enabled = false;
            txtApellidoMaterno.Enabled = false;
            txtNombres.Enabled = false;
            txtNombreCompleto.Enabled = false;
            txtNombreBusqueda.Enabled = false;

            txtFechaNacimiento.Enabled = false;
            ddlNacionalidad.Enabled = false;
            ddlSexo.Enabled = false;
            ddlEstadoCivil.Enabled = false;
            txtFechaInicioVisa.Enabled = false;
            txtFechaExpiracionVisa.Enabled = false;
            ddlClasePersona.Enabled = false;
            ddlIdGrupo.Enabled = false;


            txtTelefono1.Enabled = false;
            txtTelefono2.Enabled = false;
            txtTelefono3.Enabled = false;
            txtCelular1.Enabled = false;
            txtCelular2.Enabled = false;
            txtCelular3.Enabled = false;
            txtFax.Enabled = false;
            txtCorreoElectronico.Enabled = false;

            ddlTipoDocumento.Enabled = false;
            txtDocumento.Enabled = false;
            txtDocumentoFiscal.Enabled = false;
            ddlEstado.Enabled = false;

            if (be.Estado == Constantes.ESTADO_ACTIVO)
            {
                Util.SelectCombo(ddlEstado, Constantes.ESTADO_INACTIVO);
            }
            else
            {
                Util.SelectCombo(ddlEstado, Constantes.ESTADO_ACTIVO);
            }
        }

        ListarDireccion();

    }

    protected bool Validar(out WCPersona.BEPersona pbe)
    {
        pbe = new WCPersona.BEPersona();
        string strIdPersona = string.Empty, strEsCliente = string.Empty;
        string strEsEmpleado = string.Empty, strEstado = string.Empty, strEsProveedor = string.Empty, strEsOtro = string.Empty;
        string strAccion = string.Empty, strCodigoPersona = string.Empty, strCodigoBarras = string.Empty, strApellidoPaterno = string.Empty;
        string strApellidoMaterno = string.Empty, strNombre = string.Empty, strNombreCompleto = string.Empty, strNombreBusqueda = string.Empty;
        string strFechaNacimiento = string.Empty, strNacionalidad = string.Empty, strSexo = string.Empty, strEstadoCivil = string.Empty;
        string strFechaInicioVisa = string.Empty, strFechaExpiracionVisa = string.Empty, strClasePersona = string.Empty, strIdGrupo = string.Empty;
        string strTelefono1 = string.Empty, strTelefono2 = string.Empty, strTelefono3 = string.Empty, strCelular1 = string.Empty;
        string strCelular2 = string.Empty, strCelular3 = string.Empty, strFax = string.Empty, strCorreoElectronico = string.Empty;
        string strTipoDocumento = string.Empty, strDocumento = string.Empty, strDocumentoFiscal = string.Empty, strUsuario = string.Empty;
        int? inNull = null;
        int lnIdSpring = 0;

        strAccion = hfAccion.Value; //a: n-Nuevo, e-Editar, v-Ver

        strIdPersona = txtIdPersona.Text.Trim();
        strEsCliente = cbEsCliente.Checked ? "S" : "N";
        strEsEmpleado = cxbEsEmpleado.Checked ? "S" : "N";
        strEsProveedor = cbEsProveedor.Checked ? "S" : "N";
        strEsOtro = cbxEsOtro.Checked ? "S" : "N";

        strCodigoPersona = txtCodigoPersona.Text.Trim();
        strCodigoBarras = txtCodigoBarras.Text.Trim();
        strApellidoPaterno = txtApellidoPaterno.Text.Trim();
        strApellidoMaterno = txtApellidoMaterno.Text.Trim();
        strNombre = txtNombres.Text.Trim();
        strNombreCompleto = txtNombreCompleto.Text.Trim();
        strNombreBusqueda = txtNombreBusqueda.Text.Trim();
        strFechaNacimiento = txtFechaNacimiento.Text.Trim();
        strNacionalidad = ddlNacionalidad.SelectedValue;
        strSexo = ddlSexo.SelectedValue;
        strEstadoCivil = ddlEstadoCivil.SelectedValue;
        strFechaInicioVisa = txtFechaInicioVisa.Text.Trim();
        strFechaExpiracionVisa = txtFechaExpiracionVisa.Text.Trim();
        strClasePersona = ddlClasePersona.SelectedValue;
        strIdGrupo = ddlIdGrupo.SelectedValue;


        strTelefono1 = txtTelefono1.Text.Trim();
        strTelefono2 = txtTelefono2.Text.Trim();
        strTelefono3 = txtTelefono3.Text.Trim();
        strCelular1 = txtCelular1.Text.Trim();
        strCelular2 = txtCelular2.Text.Trim();
        strCelular3 = txtCelular3.Text.Trim();
        strFax = txtFax.Text.Trim();
        strCorreoElectronico = txtCorreoElectronico.Text.Trim();

        strTipoDocumento = ddlTipoDocumento.SelectedValue;
        strDocumento = txtDocumento.Text.Trim();
        strDocumentoFiscal = txtDocumentoFiscal.Text.Trim();
       
        strEstado = ddlEstado.SelectedValue;
        strUsuario = UsuarioSistema.CodigoUsuario;

        int.TryParse(hfIdSpring.Value, out lnIdSpring);
        //Inicializa
        WCPersona.BEPersona be = new WCPersona.BEPersona
        {
            IdPersona = Int32.Parse(hfIdPersona.Value),
            IdSpring = lnIdSpring,
            EsCliente = strEsCliente,
            EsEmpleado = strEsEmpleado,
            EsProveedor = strEsProveedor,
            EsOtro = strEsOtro,
            CodigoPersona = strCodigoPersona,
            CodigoBarras = strCodigoBarras,
            ApellidoPaterno = strApellidoPaterno,
            ApellidoMaterno = strApellidoMaterno,
            Nombres = strNombre,
            NombreCompleto = strNombreCompleto,
            NombreBusqueda = strNombreBusqueda,


            FechaNacimiento = string.IsNullOrEmpty(strFechaNacimiento) ? (DateTime?)null : (DateTime?)Util.ObtenerFechaCadena(strFechaNacimiento, AppSettings.FormatoFecha),
            Nacionalidad = strNacionalidad,
            Sexo = strSexo,
            EstadoCivil = strEstadoCivil,
            ClasePersona = strClasePersona,
            IdGrupo = strIdGrupo.Equals("0") ? inNull : int.Parse(strIdGrupo),
            //FechaInicioVisa = string.IsNullOrEmpty(strFechaInicioVisa) ? (DateTime?)null : (DateTime?)Util.ObtenerFechaCadena(strFechaInicioVisa, AppSettings.FormatoFecha),
            //FechaExpiracionVisa = string.IsNullOrEmpty(strFechaExpiracionVisa) ? (DateTime?)null : (DateTime?)Util.ObtenerFechaCadena(strFechaExpiracionVisa, AppSettings.FormatoFecha),
         
            Telefono1 = strTelefono1,
            Telefono2 = strTelefono2,
            Telefono3 = strTelefono3,
            Celular1 = strCelular1,
            Celular2 = strCelular2,
            Celular3 = strCelular3,
            Fax = strFax,
            CorreoElectronico = strCorreoElectronico,

            TipoDocumento = strTipoDocumento,
            Documento = strDocumento,
            DocumentoFiscal = strDocumentoFiscal,
            
            Estado = strEstado,
            UsuarioCreacion = strUsuario,
            FechaCreacion = DateTime.Now,
            UsuarioModificacion = strUsuario,
            FechaModificacion = DateTime.Now
        };
        pbe = be;
        return true;
    }

    protected void Guardar(string pstrEvento) //G:Grabar, A:Aplicar
    {
        string strAccion = string.Empty;
        string strUsuario = string.Empty;
        hfTabActivo.Value = "0";
        strAccion = hfAccion.Value; //a: n-Nuevo, e-Editar, v-Ver
        strUsuario = UsuarioSistema.CodigoUsuario;

        WCPersona.BEPersona be;
         
        if (!Validar(out be)) //Valida e Inicializa
        {
            return;
        }

        //Grabar
        switch (strAccion)
        {
            case "n": //Nuevo
                be = InsertarPersona(be);
                if (be.Error != 0)
                {
                    if (be.Error == -2)
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgAlertaCodigoYaExiste));
                    }
                    else
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorRegistrar));
                    }
                }
                else
                {
                    hfAccion.Value = "e";
                    hfIdPersona.Value = be.IdPersona.ToString();
                    txtIdPersona.Text = be.IdPersona.ToString();
                    txtUsuarioCreacion.Text = strUsuario;
                    txtFechaCreacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
                    txtUsuarioModificacion.Text = strUsuario;
                    txtFechaModificacion.Text = be.FechaCreacion.ToString(AppSettings.FormatoFechaHora);
                }
                
                break;
            case "e": //Actualiza
                be = ActualizarPersona(be);
                if (be.Error != 0)
                {
                    if (be.Error == -2)
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgAlertaCodigoYaExiste));
                    }
                    else
                    {
                        Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorRegistrar));
                    }
                }
                else
                {
                    txtUsuarioModificacion.Text = strUsuario;
                    txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);
                }
                break;
            case "d": //Elimina
                be = EliminaPersona(be);
                if (be.Error != 0)
                {
                    Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorActualizar));
                }
                txtUsuarioModificacion.Text = strUsuario;
                txtFechaModificacion.Text = be.FechaModificacion.ToString(AppSettings.FormatoFechaHora);

               
                break;
        }
        if (pstrEvento == "G") { if (be.Error == 0) { Salir(); } }
    }

    protected void Salir()
    {
        string strCadena = string.Format("?a=l&param1={0}", HttpUtility.UrlDecode(Request.QueryString["param1"]));
        Util.Redireciona(RUTA_LISTA, strCadena, true);
    }

    #endregion

    #region TAB CONCEPTOS

    protected void ibtNuevoDireccion_Click(object sender, ImageClickEventArgs e)
    {
        NuevoDireccion();
    }

    protected void lvDireccion_ItemCreated(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.InsertItem)
        {
            TextBox txtDetalleInsertTelefono1 = (TextBox)e.Item.FindControl("txtDetalleInsertTelefono1");
            if (txtDetalleInsertTelefono1 != null)
                txtDetalleInsertTelefono1.Attributes.Add("onkeyup", "javascript:return fnIngresoNumeroDecimales(this,0,false);");

            TextBox txtDetalleInsertTelefono2 = (TextBox)e.Item.FindControl("txtDetalleInsertTelefono2");
            if (txtDetalleInsertTelefono2 != null)
                txtDetalleInsertTelefono2.Attributes.Add("onkeyup", "javascript:return fnIngresoNumeroDecimales(this,0,false);");

            TextBox txtDetalleInsertTelefono3 = (TextBox)e.Item.FindControl("txtDetalleInsertTelefono3");
            if (txtDetalleInsertTelefono3 != null)
                txtDetalleInsertTelefono3.Attributes.Add("onkeyup", "javascript:return fnIngresoNumeroDecimales(this,0,false);");

            TextBox txtDetalleInsertFax = (TextBox)e.Item.FindControl("txtDetalleInsertFax");
            if (txtDetalleInsertFax != null)
                txtDetalleInsertFax.Attributes.Add("onkeyup", "javascript:return fnIngresoNumeroDecimales(this,0,false);");
        }
    }

    protected void lvDireccion_ItemInserting(object sender, ListViewInsertEventArgs e)
    {
        BoundDetalle(e.Item);
    }

    protected void lvDireccion_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        BoundDetalle(e.Item);
    }


    protected void lvDireccion_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        DireccionOperacion(e.CommandName, e.Item);
    }

    
    protected void ListarDireccion()
    {
        int intTotalFilas = 0, intFilasXPagina = 0;
        //Obtiene lo ultimos no eliminados  
        WCDireccion.BEDireccion[] arrNuevo = null;
        arrNuevo = ListarDireccion(int.Parse(hfIdPersona.Value), "A", ucpagListaDireccion.NumeroPagina);

        lvDireccion.DataSource = arrNuevo;
        lvDireccion.DataBind();
        if (arrNuevo.Length > 0)
        {
            intFilasXPagina = arrNuevo[0].FilasXPagina;
            intTotalFilas = arrNuevo[0].TotalFilas;
        }
        ucpagListaDireccion.TotalRegistros = intTotalFilas;
        ucpagListaDireccion.RegistrosPorPagina = intFilasXPagina;
        ucpagListaDireccion.EnlazarPaginador();
    }

    protected void NuevoDireccion()
    {
        DataSet ds = new DataSet();
        lvDireccion.EditIndex = -1;
        lvDireccion.InsertItemPosition = InsertItemPosition.LastItem;
        ListarDireccion();

        String  txtpais = string.Empty;
        //TextBox txtDetalleInsertSecuencia = lvDireccion.InsertItem.FindControl("txtDetalleInsertSecuencia");
        //txtDetalleInsertSecuencia.en

         txtpais = lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdPais").ToString();
        //txtsecuencia.Enabled = false;
        

        //Inicializa los DropDown
        DropDownList ddlDetalleInsertTipoDireccion = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertTipoDireccion");
        if (ddlDetalleInsertTipoDireccion != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertTipoDireccion, ListarParametroDetalle(1, UsuarioSistema.IdAplicacion, Constantes.PARAMETRO_TIPODIRECCION), "Descripcion", "ParametroDetalle", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
        //Carga el pais
        DropDownList ddlDetalleInsertIdPais = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdPais");
        if (ddlDetalleInsertIdPais != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdPais, ListarPais(), "Descripcion", "IdPais", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
        //Carga el Departamento
        DropDownList ddlDetalleInsertIdDepartamento = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdDepartamento");
        if (ddlDetalleInsertIdDepartamento != null)
        {
            string IdPais = string.Empty;
            IdPais = ddlDetalleInsertIdPais.SelectedValue.ToString();
            Util.loadComboAndItem(ddlDetalleInsertIdDepartamento, ListarDepartamentoPorPais(int.Parse(IdPais)), "Descripcion", "IdDepartamento", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
        //Carga el Provincia
        DropDownList ddlDetalleInsertIdProvincia = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdProvincia");
        if (ddlDetalleInsertIdProvincia != null)
        {
            string IdDepartamento = string.Empty;
            IdDepartamento = ddlDetalleInsertIdDepartamento.SelectedValue.ToString();
            Util.loadComboAndItem(ddlDetalleInsertIdProvincia, ListarProvinciaPorDepartamento(int.Parse(IdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
        //Carga el Distrito
        DropDownList ddlDetalleInsertIdDistrito = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdDistrito");
        if (ddlDetalleInsertIdDistrito != null)
        {
            string IdProvincia = string.Empty;
            IdProvincia = ddlDetalleInsertIdProvincia.SelectedValue.ToString();
            Util.loadComboAndItem(ddlDetalleInsertIdDistrito, ListarDistritoPorProvincia(int.Parse(IdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
        //Asocia para validar
        //ImageButton ibtDetalleInsertGrabar = (ImageButton)lvDireccion.InsertItem.FindControl("ibtDetalleInsertGrabar");
        //ibtDetalleInsertGrabar.Attributes.Add("OnClick", "javascript:return fnValidarDireccion();");

        lblNuevoDetalle.Visible = false;
        ibtNuevoDireccion.Visible = false;
    }


    protected void DireccionOperacion(string pstrComando, ListViewItem plviObj)
    {
        switch (pstrComando)
        {
            case Constantes.ACCION_GRABARNUEVO:
                GrabarDireccionNuevo(plviObj);
                break;
                
            case Constantes.ACCION_EDITAR:
                EditarDireccion(plviObj);
                break;

            case Constantes.ACCION_GRABAR:
                GrabarDireccion(plviObj);

                break;
            case Constantes.ACCION_CANCELAR:
                CancelarDireccion();
                break;
            case Constantes.ACCION_ELIMINAR:
                EliminarDireccion(plviObj);
                break;
        }
    }

    protected void GrabarDireccionNuevo(ListViewItem plceArg)
    {
        //Crear un item:
        TextBox txtDetalleInsertIdPersona = (TextBox)plceArg.FindControl("txtDetalleInsertIdPersona");
        TextBox txtDetalleInsertSecuencia = (TextBox)plceArg.FindControl("txtDetalleInsertSecuencia");
        DropDownList ddlDetalleInsertTipoDireccion = (DropDownList)plceArg.FindControl("ddlDetalleInsertTipoDireccion");
        TextBox txtDetalleInsertDireccion = (TextBox)plceArg.FindControl("txtDetalleInsertDireccion");
        TextBox txtDetalleInsertReferencia = (TextBox)plceArg.FindControl("txtDetalleInsertReferencia");
        //DropDownList ddlDetalleInsertIdPais = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdPais");
        //DropDownList ddlDetalleInsertIdDepartamento = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdDepartamento");
        //DropDownList ddlDetalleInsertIdProvincia = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdProvincia");
        DropDownList ddltDetalleInsertIdDistrito = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdDistrito");
        TextBox txtDetalleInsertTelefono1 = (TextBox)plceArg.FindControl("txtDetalleInsertTelefono1");
        TextBox txtDetalleInsertTelefono2 = (TextBox)plceArg.FindControl("txtDetalleInsertTelefono2");
        TextBox txtDetalleInsertTelefono3 = (TextBox)plceArg.FindControl("txtDetalleInsertTelefono3");
        TextBox txtDetalleInsertFax = (TextBox)plceArg.FindControl("txtDetalleInsertFax");
        DropDownList ddlDetalleInsertEstado = (DropDownList)plceArg.FindControl("ddlDetalleInsertEstado");

        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion
        {
            RefGuid = Guid.NewGuid().ToString(),
            IdPersona = int.Parse(hfIdPersona.Value),
            //Secuencia = int.Parse(txtDetalleInsertSecuencia.Text.Trim()),
            
            TipoDireccion = ddlDetalleInsertTipoDireccion.SelectedValue,
            Direccion = txtDetalleInsertDireccion.Text.Trim(),
            Referencia = txtDetalleInsertReferencia.Text.Trim(),
            IdDistrito = int.Parse(ddltDetalleInsertIdDistrito.SelectedValue),
            Telefono1 = txtDetalleInsertTelefono1.Text.Trim(),
            Telefono2 = txtDetalleInsertTelefono2.Text.Trim(),
            Telefono3 = txtDetalleInsertTelefono3.Text.Trim(),
            Fax = txtDetalleInsertFax.Text.Trim(),
            Estado = ddlDetalleInsertEstado.SelectedValue,
            RefAccion = WCDireccion.DbTipoAccion.Insertar,
            UsuarioCreacion = UsuarioSistema.CodigoUsuario,
        };

        //InsertarParametroDetalle(be);
        //// Cancela el modo de Insersion de ventana

        be = InsertarDireccion(be);
        if (be.Error != 0)
        {
            if (be.Error == -2)
            {
                Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgAlertaCodigoYaExiste));
            }
            else
            {
                Util.ejecutaScriptAJAX(this.Page, string.Format("alert('{0}');", Resources.resMensaje.msgErrorRegistrar));
            }
            return;
        }
        
        CancelarModoInsertar();
        //// Listar el Detalle 
        ListarDireccion();
    }

    protected void GrabarDireccion(ListViewItem plceArg)
    {

        //Obtiene los valres ingresados

        HiddenField hfDetalleEditIdDireccion = (HiddenField)plceArg.FindControl("hfDetalleEditIdDireccion");
        TextBox txtDetalleEditSecuencia = (TextBox)plceArg.FindControl("txtDetalleEditSecuencia");
        DropDownList ddlDetalleEditTipoDireccion = (DropDownList)plceArg.FindControl("ddlDetalleEditTipoDireccion");
        TextBox txtDetalleEditDireccion = (TextBox)plceArg.FindControl("txtDetalleEditDireccion");
        TextBox txtDetalleEditReferencia = (TextBox)plceArg.FindControl("txtDetalleEditReferencia");
        DropDownList ddlDetalleEditIdPais = (DropDownList)plceArg.FindControl("ddlDetalleEditIdPais");
        DropDownList ddlDetalleEditIdDepartamento = (DropDownList)plceArg.FindControl("ddlDetalleEditIdDepartamento");
        DropDownList ddlDetalleEditIdProvincia = (DropDownList)plceArg.FindControl("ddlDetalleEditIdProvincia");
        DropDownList ddlDetalleEditIdDistrito = (DropDownList)plceArg.FindControl("ddlDetalleEditIdDistrito");
        TextBox txtDetalleEditTelefono1 = (TextBox)plceArg.FindControl("txtDetalleEditTelefono1");
        TextBox txtDetalleEditTelefono2 = (TextBox)plceArg.FindControl("txtDetalleEditTelefono2");
        TextBox txtDetalleEditTelefono3 = (TextBox)plceArg.FindControl("txtDetalleEditTelefono3");
        TextBox txtDetalleEditFax = (TextBox)plceArg.FindControl("txtDetalleEditFax");
        DropDownList ddlDetalleEditEstado = (DropDownList)plceArg.FindControl("ddlDetalleEditEstado");

        
        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion
        {
            IdPersona = int.Parse(hfIdPersona.Value),
            Secuencia = int.Parse(txtDetalleEditSecuencia.Text.Trim()),
            TipoDireccion = ddlDetalleEditTipoDireccion.SelectedValue,

            Direccion = txtDetalleEditDireccion.Text.Trim(),
            Referencia = txtDetalleEditReferencia.Text.Trim(),
            IdDistrito = int.Parse(ddlDetalleEditIdDistrito.SelectedValue),

            Telefono1 = txtDetalleEditTelefono1.Text.Trim(),
            Telefono2 = txtDetalleEditTelefono2.Text.Trim(),
            Telefono3 = txtDetalleEditTelefono3.Text.Trim(),
            Fax = txtDetalleEditFax.Text.Trim(),
            Estado = ddlDetalleEditEstado.SelectedValue,
            UsuarioModificacion = UsuarioSistema.CodigoUsuario,
            
        };

        ActualizarDireccion(be);

        lvDireccion.EditIndex = -1;

        //// Cancela el modo de Insersion
        CancelarModoInsertar();

        //// Listar el Detalle de Salida
        ListarDireccion();
        hfTabActivo.Value = "0";
    }

    protected void EliminarDireccion(ListViewItem plceArg)
    {

        //TextBox hfDetalleItemIdParametro = (TextBox)plceArg.FindControl("txtDetalleEditIdParametro");
        Label lblDetalleItemSecuencia = (Label)plceArg.FindControl("lblDetalleItemSecuencia");

        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion

        {
            IdPersona = int.Parse(hfIdPersona.Value),
            Secuencia = int.Parse(lblDetalleItemSecuencia.Text.Trim()),
            Estado = Constantes.ESTADO_INACTIVO,
            UsuarioModificacion = UsuarioSistema.CodigoUsuario,
        };

        EliminarDireccion(be);

        lvDireccion.EditIndex = -1;

        //// Listar el Detalle de Salida
        ListarDireccion();
    }

    protected void EditarDireccion(ListViewItem plceArg)
    {
        lvDireccion.EditIndex = plceArg.DataItemIndex;
        HiddenField hfDetalleItemGui = (HiddenField)plceArg.FindControl("hfDetalleItemGui");
        // Listar Detalle
        ListarDireccion();
    }

    protected void CancelarDireccion()
    {
        lvDireccion.EditIndex = -1;
        CancelarModoInsertar();
        // Listar Detalle
        ListarDireccion();
    }

  
    protected void CancelarModoInsertar()
    {
        lvDireccion.InsertItemPosition = InsertItemPosition.None;
        lblNuevoDetalle.Visible = true;
        ibtNuevoDireccion.Visible = true;
    }

    protected void BoundDetalle(ListViewItem plceArg)
    {
        if (plceArg.ItemType == ListViewItemType.DataItem)
        {
            if (plceArg.DataItemIndex == lvDireccion.EditIndex)
            {
                //TipoDireccion
                HiddenField hfDetalleEditTipoDireccion = (HiddenField)plceArg.FindControl("hfDetalleEditTipoDireccion");
                DropDownList ddlDetalleEditTipoDireccion = (DropDownList)plceArg.FindControl("ddlDetalleEditTipoDireccion");
                Util.loadComboAndItem(ddlDetalleEditTipoDireccion, ListarParametroDetalle(1, UsuarioSistema.IdAplicacion, Constantes.PARAMETRO_TIPODIRECCION), "Descripcion", "ParametroDetalle", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
                
                if (ddlDetalleEditTipoDireccion != null)
                {
                    Util.SelectCombo(ddlDetalleEditTipoDireccion, hfDetalleEditTipoDireccion.Value.Trim());
                }

                //Pais
                HiddenField hfDetalleEditIdPais = (HiddenField)plceArg.FindControl("hfDetalleEditIdPais");
                DropDownList ddlDetalleEditIdPais = (DropDownList)plceArg.FindControl("ddlDetalleEditIdPais");
                Util.loadComboAndItem(ddlDetalleEditIdPais, ListarPais(), "Descripcion", "IdPais", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
                if (ddlDetalleEditIdPais != null)
                {
                    Util.SelectCombo(ddlDetalleEditIdPais, hfDetalleEditIdPais.Value);
                }

                //Departamento
                string IdPais = string.Empty;
                IdPais = ddlDetalleEditIdPais.SelectedValue.ToString();

                HiddenField hfDetalleEditIdDepartamento = (HiddenField)plceArg.FindControl("hfDetalleEditIdDepartamento");
                DropDownList ddlDetalleEditIdDepartamento = (DropDownList)plceArg.FindControl("ddlDetalleEditIdDepartamento");
                Util.loadComboAndItem(ddlDetalleEditIdDepartamento, ListarDepartamentoPorPais(int.Parse(IdPais)), "Descripcion", "IdDepartamento", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
                if (ddlDetalleEditIdDepartamento != null)
                {
                    Util.SelectCombo(ddlDetalleEditIdDepartamento, hfDetalleEditIdDepartamento.Value);
                }

                //Provincia
                string IdDepartamento = string.Empty;
                IdDepartamento = ddlDetalleEditIdDepartamento.SelectedValue.ToString();

                HiddenField hfDetalleEditIdProvincia = (HiddenField)plceArg.FindControl("hfDetalleEditIdProvincia");
                DropDownList ddlDetalleEditIdProvincia = (DropDownList)plceArg.FindControl("ddlDetalleEditIdProvincia");
                Util.loadComboAndItem(ddlDetalleEditIdProvincia, ListarProvinciaPorDepartamento(int.Parse(IdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
                if (ddlDetalleEditIdProvincia != null)
                {
                    Util.SelectCombo(ddlDetalleEditIdProvincia, hfDetalleEditIdProvincia.Value);
                }

                //Distrito
                string IdProvincia = string.Empty;
                IdProvincia = ddlDetalleEditIdProvincia.SelectedValue.ToString();

                HiddenField hfDetalleEditIdDistrito = (HiddenField)plceArg.FindControl("hfDetalleEditIdDistrito");
                DropDownList ddlDetalleEditIdDistrito = (DropDownList)plceArg.FindControl("ddlDetalleEditIdDistrito");
                Util.loadComboAndItem(ddlDetalleEditIdDistrito, ListarDistritoPorProvincia(int.Parse(IdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
                if (ddlDetalleEditIdProvincia != null)
                {
                    Util.SelectCombo(ddlDetalleEditIdDistrito, hfDetalleEditIdDistrito.Value);
                }

            }
            //else
            //{
            //    //Pais
                //HiddenField hfDetalleEditIdPais = (HiddenField)plceArg.FindControl("ddlDetalleEditIdPais");
                //DropDownList ddlDetalleInsertIdPais = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdPais");

                //if (ddlDetalleInsertIdPais != null)
                //{
                //    Util.loadComboAndItem(ddlDetalleInsertIdPais, ListarPais(), "Descripcion", "IdPais", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");

                //}

                ////Departamento
                //HiddenField hfDetalleEditIdDepartamento = (HiddenField)plceArg.FindControl("ddlDetalleEditIdDepartamento");
                //DropDownList ddlDetalleInsertIdDepartamento = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdDepartamento");

                //string IdPais = string.Empty;
                //IdPais = ddlDetalleInsertIdPais.SelectedValue.ToString();

                //if (ddlDetalleInsertIdDepartamento != null)
                //{
                //    Util.loadComboAndItem(ddlDetalleInsertIdDepartamento, ListarDepartamentoPorPais(int.Parse(IdPais)), "Descripcion", "IdDepartamento", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");

                //}

                ////Provincia
                //HiddenField hfDetalleEditIdProvincia = (HiddenField)plceArg.FindControl("ddlDetalleEditIdProvincia");
                //DropDownList ddlDetalleInsertIdProvincia = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdProvincia");

                //string IdDepartamento = string.Empty;
                //IdDepartamento = ddlDetalleInsertIdDepartamento.SelectedValue.ToString();

                //if (ddlDetalleInsertIdProvincia != null)
                //{
                //    Util.loadComboAndItem(ddlDetalleInsertIdProvincia, ListarProvinciaPorDepartamento(int.Parse(IdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");

                //}

                ////Distrito
                //HiddenField hfDetalleEditIdDistrito = (HiddenField)plceArg.FindControl("ddlDetalleEditIdDistrito");
                //DropDownList ddlDetalleInsertIdDistrito = (DropDownList)plceArg.FindControl("ddlDetalleInsertIdDistrito");

                //string IdProvincia = string.Empty;
                //IdProvincia = ddlDetalleInsertIdProvincia.SelectedValue.ToString();

                //if (ddlDetalleInsertIdDistrito != null)
                //{
                //    Util.loadComboAndItem(ddlDetalleInsertIdDistrito, ListarDistritoPorProvincia(int.Parse(IdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");

                //}
            //}
        }
    }

    protected void ddlDetalleInsertIdPais_SelectedIndexChanged(object sender, EventArgs e)
    {
        hfTabActivo.Value = "1";
        ListarDepartamentoInsert(sender);
    }

    protected void ddlDetalleInsertIdDepartamento_SelectedIndexChanged(object sender, EventArgs e)
    {
        hfTabActivo.Value = "1";
        ListarProvinciaInsert(sender);
    }

    protected void ddlDetalleInsertIdProvincia_SelectedIndexChanged(object sender, EventArgs e)
    {
        hfTabActivo.Value = "1";
        ListarDistritoInsert(sender);
    }

    protected void ddlDetalleEditIdPais_SelectedIndexChanged(object sender, EventArgs e)
    {
        hfTabActivo.Value = "1";
        ListarDepartamentoEdit(sender);
    }
    protected void ddlDetalleEditIdDepartamento_SelectedIndexChanged(object sender, EventArgs e)
    {
        hfTabActivo.Value = "1";
        ListarProvinciaEdit(sender);
    }
    protected void ddlDetalleEditIdProvincia_SelectedIndexChanged(object sender, EventArgs e)
    {
        hfTabActivo.Value = "1";
        ListarDistritoEdit(sender);
    }
    

    protected void ucpagListaDireccion_CambioPagina(object sender, EventArgs e)
    {
        ListarDireccion();
    }

    /// <summary>
    /// Carga los Departamento del Pais seleccionado
    /// </summary>
    private void ListarDepartamentoInsert(object pob)
    {
        //Departamento
        DropDownList ddlDetalleInsertIdPais = (DropDownList)pob;
        string strIdPais = ddlDetalleInsertIdPais.SelectedValue;

        DropDownList ddlDetalleInsertIdDepartamento = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdDepartamento");
        if (ddlDetalleInsertIdDepartamento != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdDepartamento, ListarDepartamentoPorPais(int.Parse(strIdPais)), "Descripcion", "IdDepartamento", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

        string strIdDepartamento = ddlDetalleInsertIdDepartamento.SelectedValue;
        DropDownList ddlDetalleInsertIdProvincia = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdProvincia");
        if (ddlDetalleInsertIdProvincia != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdProvincia, ListarProvinciaPorDepartamento(int.Parse(strIdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

        string strIdProvincia = ddlDetalleInsertIdProvincia.SelectedValue;
        DropDownList ddlDetalleInsertIdDistrito = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdDistrito");
        if (ddlDetalleInsertIdDistrito != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdDistrito, ListarDistritoPorProvincia(int.Parse(strIdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
    }

    /// <summary>
    /// Carga los Provincia del Departamento seleccionado
    /// </summary>
    private void ListarProvinciaInsert(object pob)
    {
        //Provincia
        DropDownList ddlDetalleInsertIdDepartamento = (DropDownList)pob;
        string strIdDepartamento = ddlDetalleInsertIdDepartamento.SelectedValue;

        DropDownList ddlDetalleInsertIdProvincia = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdProvincia");
        if (ddlDetalleInsertIdDepartamento != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdProvincia, ListarProvinciaPorDepartamento(int.Parse(strIdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

        string strIdProvincia = ddlDetalleInsertIdProvincia.SelectedValue;
        DropDownList ddlDetalleInsertIdDistrito = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdDistrito");
        if (ddlDetalleInsertIdDistrito != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdDistrito, ListarDistritoPorProvincia(int.Parse(strIdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }
       
    }

    /// <summary>
    /// Carga los Distritos de la Provincia seleccionado
    /// </summary>
    private void ListarDistritoInsert(object pob)
    {
        DropDownList ddlDetalleInsertIdProvincia = (DropDownList)pob;
        string strIdProvincia = ddlDetalleInsertIdProvincia.SelectedValue;

        DropDownList ddlDetalleInsertIdDistrito = (DropDownList)lvDireccion.InsertItem.FindControl("ddlDetalleInsertIdDistrito");
        if (ddlDetalleInsertIdDistrito != null)
        {
            Util.loadComboAndItem(ddlDetalleInsertIdDistrito, ListarDistritoPorProvincia(int.Parse(strIdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

    }

    private void ListarDepartamentoEdit(object pob)
    {
        //Departamento
        DropDownList ddlDetalleEditIdPais = (DropDownList)pob;
        string strIdPais = ddlDetalleEditIdPais.SelectedValue;

        DropDownList ddlDetalleEditIdDepartamento = (DropDownList)lvDireccion.EditItem.FindControl("ddlDetalleEditIdDepartamento");
        if (ddlDetalleEditIdDepartamento != null)
        {
            Util.loadComboAndItem(ddlDetalleEditIdDepartamento, ListarDepartamentoPorPais(int.Parse(strIdPais)), "Descripcion", "IdDepartamento", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

        string strIdDepartamento = ddlDetalleEditIdDepartamento.SelectedValue;
        DropDownList ddlDetalleEditIdProvincia = (DropDownList)lvDireccion.EditItem.FindControl("ddlDetalleEditIdProvincia");
        if (ddlDetalleEditIdProvincia != null)
        {
            Util.loadComboAndItem(ddlDetalleEditIdProvincia, ListarProvinciaPorDepartamento(int.Parse(strIdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

        string strIdProvincia = ddlDetalleEditIdProvincia.SelectedValue;
        DropDownList ddlDetalleEditIdDistrito = (DropDownList)lvDireccion.EditItem.FindControl("ddlDetalleEditIdDistrito");
        if (ddlDetalleEditIdDistrito != null)
        {
            Util.loadComboAndItem(ddlDetalleEditIdDistrito, ListarDistritoPorProvincia(int.Parse(strIdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

    }
    /// <summary>
    /// Carga los Provincia del Departamento seleccionado
    /// </summary>
    private void ListarProvinciaEdit(object pob)
    {
        //Provincia
        DropDownList ddlDetalleEditIdDepartamento = (DropDownList)pob;
        string strIdDepartamento = ddlDetalleEditIdDepartamento.SelectedValue;

        DropDownList ddlDetalleEditIdProvincia = (DropDownList)lvDireccion.EditItem.FindControl("ddlDetalleEditIdProvincia");
        if (ddlDetalleEditIdDepartamento != null)
        {
            Util.loadComboAndItem(ddlDetalleEditIdProvincia, ListarProvinciaPorDepartamento(int.Parse(strIdDepartamento)), "Descripcion", "IdProvincia", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

        string strIdProvincia = ddlDetalleEditIdProvincia.SelectedValue;
        DropDownList ddlDetalleEditIdDistrito = (DropDownList)lvDireccion.EditItem.FindControl("ddlDetalleEditIdDistrito");
        if (ddlDetalleEditIdDistrito != null)
        {
            Util.loadComboAndItem(ddlDetalleEditIdDistrito, ListarDistritoPorProvincia(int.Parse(strIdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

    }
    private void ListarDistritoEdit(object pob)
    {
        DropDownList ddlDetalleEditIdProvincia = (DropDownList)pob;
        string strIdProvincia = ddlDetalleEditIdProvincia.SelectedValue;

        DropDownList ddlDetalleEditIdDistrito = (DropDownList)lvDireccion.EditItem.FindControl("ddlDetalleEditIdDistrito");
        if (ddlDetalleEditIdDistrito != null)
        {
            Util.loadComboAndItem(ddlDetalleEditIdDistrito, ListarDistritoPorProvincia(int.Parse(strIdProvincia)), "Descripcion", "IdDistrito", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        }

    }


    #endregion TAB CONCEPTOS


    #region LLAMDAS A WEBSERVICES

    /// <summary>
    /// Método Lista 
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCPersona.BEPersona InsertarPersona(WCPersona.BEPersona pbe)
    {
        WCPersona.BEPersona be = new WCPersona.BEPersona();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCPersona.IWCPersona>("BasicHttpBinding_IWCPersona"))
        {
            var response = client.ServiceOperation<WCPersona.BEPersona>(c => c.Insertar(pbe));
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Obtiene 
    /// </summary>
    /// <returns>Devuelve un Objeto</returns>
    protected WCPersona.BEPersona ObtenerPersona(WCPersona.BEPersona pbe)
    {
        WCPersona.BEPersona be = new WCPersona.BEPersona();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCPersona.IWCPersona>("BasicHttpBinding_IWCPersona"))
        {
            var response = client.ServiceOperation<WCPersona.BEPersona>(
               c => c.Obtener_Mant(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Actualiza
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCPersona.BEPersona ActualizarPersona(WCPersona.BEPersona pbe) ///
    {
        WCPersona.BEPersona be = new WCPersona.BEPersona();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCPersona.IWCPersona>("BasicHttpBinding_IWCPersona"))
        {
            var response = client.ServiceOperation<WCPersona.BEPersona>(
               c => c.Actualizar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Elimina 
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCPersona.BEPersona EliminaPersona(WCPersona.BEPersona pbe)
    {
        WCPersona.BEPersona be = new WCPersona.BEPersona();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCPersona.IWCPersona>("BasicHttpBinding_IWCPersona"))
        {
            var response = client.ServiceOperation<WCPersona.BEPersona>(
               c => c.Eliminar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Lista 
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    //protected DataTable ListarPersona()
    //{
    //    WCPersona.BEPersona be = new WCPersona.BEPersona();
    //    be.IdPersona = 0;
    //    be.NombreBusqueda = "";
    //    be.Estado = "A";
    //    be.Pagina = 0;
    //    DataTable dt = new DataTable();
    //    using (var client = new ServiceClient<WCPersona.IWCPersona>("BasicHttpBinding_IWCPersona"))
    //    {
    //        var response = client.ServiceOperation<DataTable>(
    //           c => c.Listar(be).Tables[0]
    //           );
    //        ;
    //        dt = response;
    //    }
    //    return dt;
    //}

    /// <summary>
    /// Método Lista Companias
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    //protected DataTable ListarDireccion()
    //{
    //    WCDireccion.BEDireccion be = new WCDireccion.BEDireccion();
    //    be.IdPersona = pintidPersona;
    //    be.Secuencia = pintSecuencia;
       
    //    DataTable dt = new DataTable();
    //    using (var client = new ServiceClient<WCDireccion.IWCDireccion>("BasicHttpBinding_IWCDireccion"))
    //    {
    //        var response = client.ServiceOperation<DataTable>(c => c.Listar(be).Tables[0]);
    //        dt = response;
    //    }
    //    return dt;
    //}

    //protected DataTable ListarAplicacion()
    //{
    //    DataTable dt = new DataTable();
    //    //WCAplicacion.BEAplicacion beAp = new WCAplicacion.BEAplicacion();
    //    //beAp.IdSuit = 0;
    //    //beAp.Descripcion = string.Empty;
    //    //beAp.Estado = "A";
    //    //beAp.Pagina = 0;
    //    using (var client = new ServiceClient<WCAplicacion.IWCAplicacion>("BasicHttpBinding_IWCAplicacion"))
    //    {
    //        var response = client.ServiceOperation<DataTable>(
    //            c => c.Listar().Tables[0]
    //                );
    //        ;
    //        dt = response;
    //    }
    //    return dt;
    //}

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCDireccion.BEDireccion[] ListarDireccion(int pinIdPersona,   string pstrEstado, int pinPagina)
    {
        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion();

        be.IdPersona = pinIdPersona;
        
        be.Estado = pstrEstado;
        be.Pagina = pinPagina;
        WCDireccion.BEDireccion[] arr = null;
        using (var client = new ServiceClient<WCDireccion.IWCDireccion>("BasicHttpBinding_IWCDireccion"))
        {
            var response = client.ServiceOperation<WCDireccion.BEDireccion[]>(c => c.Listar(be));
            arr = response;
        }
        return arr;
    }

    /// <summary>
    /// Método Lista 
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCDireccion.BEDireccion InsertarDireccion(WCDireccion.BEDireccion pbe)
    {
        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCDireccion.IWCDireccion>("BasicHttpBinding_IWCDireccion"))
        {
            var response = client.ServiceOperation<WCDireccion.BEDireccion>(c => c.Insertar(pbe));
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Actualiza 
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCDireccion.BEDireccion ActualizarDireccion(WCDireccion.BEDireccion pbe)
    {
        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCDireccion.IWCDireccion>("BasicHttpBinding_IWCDireccion"))
        {
            var response = client.ServiceOperation<WCDireccion.BEDireccion>(
               c => c.Actualizar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    /// <summary>
    /// Método Elimina 
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected WCDireccion.BEDireccion EliminarDireccion(WCDireccion.BEDireccion pbe)
    {
        WCDireccion.BEDireccion be = new WCDireccion.BEDireccion();
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCDireccion.IWCDireccion>("BasicHttpBinding_IWCDireccion"))
        {
            var response = client.ServiceOperation<WCDireccion.BEDireccion>(
               c => c.Eliminar(pbe)
               );
            ;
            be = response;
        }
        return be;
    }

    protected DataTable ListarAplicaciones()
    {

        WCAplicacion.BEAplicacion be = new WCAplicacion.BEAplicacion();
        be.Estado = "A";

        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCAplicacion.IWCAplicacion>("BasicHttpBinding_IWCAplicacion"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar().Tables[0]);
            dt = response;
        }
        return dt;
    }

    protected DataTable ListarParametroDetalle(int pintidCompania, int pintIdAplicacion, string pstrParametro)
    {
        WCParametroDetalle.BEParametroDetalle be = new WCParametroDetalle.BEParametroDetalle();
        be.IdCompania = pintidCompania;
        be.IdAplicacion = pintIdAplicacion;
        be.Parametro = pstrParametro;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCParametroDetalle.IWCParametroDetalle>("BasicHttpBinding_IWCParametroDetalle"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar(be).Tables[0]);
            dt = response;
        }
        return dt;
    }
    
    protected DataTable ListarGrupoEmpresarial()
    {

        WCGrupoEmpresarial.BEGrupoEmpresarial be = new WCGrupoEmpresarial.BEGrupoEmpresarial();
        be.Descripcion = string.Empty;
        be.Estado = "A";
        be.Pagina = 0;
        DataTable dt = new DataTable(); 
        using (var client = new ServiceClient<WCGrupoEmpresarial.IWCGrupoEmpresarial>("BasicHttpBinding_IWCGrupoEmpresarial"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar(be).Tables[0]);
            dt = response;
        }
        return dt;
    }

    protected DataTable ListarPais()
    {

        WCPais.BEPais be = new WCPais.BEPais();
        be.Descripcion = string.Empty;
        be.Estado = "A";
        be.Pagina = 0;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCPais.IWCPais>("BasicHttpBinding_IWCPais"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar_Sel(be).Tables[0]);
            dt = response;
        }
        return dt;
    }

    protected DataTable ListarDepartamentoPorPais(int pinIdPais)
    {

        WCDepartamento.BEDepartamento be = new WCDepartamento.BEDepartamento();
        be.IdPais = pinIdPais;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCDepartamento.IWCDepartamento>("BasicHttpBinding_IWCDepartamento"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.ListarPorPais(be).Tables[0]);
            dt = response;
        }
        return dt;
    }

    protected DataTable ListarProvinciaPorDepartamento(int pinIdDepartamento)
    {
        WCProvincia.BEProvincia be = new WCProvincia.BEProvincia();
        be.IdDepartamento = pinIdDepartamento;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCProvincia.IWCProvincia>("BasicHttpBinding_IWCProvincia"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.ListarPorDepartamento(be).Tables[0]);
            dt = response;
        }
        return dt;
    }

    protected DataTable ListarDistritoPorProvincia(int pintIdProvincia)
    {
        WCDistrito.BEDistrito be = new WCDistrito.BEDistrito();
        
        be.IdProvincia = pintIdProvincia;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCDistrito.IWCDistrito>("BasicHttpBinding_IWCDistrito"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.ListarPorDistrito(be).Tables[0]);
            dt = response;
        }
        return dt;
    }


    #endregion

    
}
   
